home *** CD-ROM | disk | FTP | other *** search
/ This Disc Bytes! / Power Computing - The Disc 2 - This Disc Bytes.ISO / mac / CodeWarrior 7 Lite for 68K / MacOS Support / Headers / Universal Headers / Quickdraw.h < prev    next >
Text File  |  1995-07-06  |  54KB  |  1,432 lines

  1. /*
  2.      File:        Quickdraw.h
  3.  
  4.      Contains:    QuickDraw Graphics Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __QUICKDRAW__
  21. #define __QUICKDRAW__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifndef __MIXEDMODE__
  30. #include <MixedMode.h>
  31. #endif
  32.  
  33. #ifndef __QUICKDRAWTEXT__
  34. #include <QuickdrawText.h>
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_ALIGN_SUPPORTED
  42. #pragma options align=mac68k
  43. #endif
  44.  
  45. #if PRAGMA_IMPORT_SUPPORTED
  46. #pragma import on
  47. #endif
  48.  
  49.  
  50. enum {
  51.     invalColReq                    = -1,                            /*invalid color table request*/
  52. /* transfer modes */
  53.     srcCopy                        = 0,                            /*the 16 transfer modes*/
  54.     srcOr                        = 1,
  55.     srcXor                        = 2,
  56.     srcBic                        = 3,
  57.     notSrcCopy                    = 4,
  58.     notSrcOr                    = 5,
  59.     notSrcXor                    = 6,
  60.     notSrcBic                    = 7,
  61.     patCopy                        = 8,
  62.     patOr                        = 9,
  63.     patXor                        = 10,
  64.     patBic                        = 11,
  65.     notPatCopy                    = 12,
  66.     notPatOr                    = 13,
  67.     notPatXor                    = 14,
  68.     notPatBic                    = 15,
  69. /* Special Text Transfer Mode */
  70.     grayishTextOr                = 49,
  71.     hilitetransfermode            = 50,
  72. /* Arithmetic transfer modes */
  73.     blend                        = 32,
  74.     addPin                        = 33
  75. };
  76.  
  77. enum {
  78.     addOver                        = 34,
  79.     subPin                        = 35,
  80.     addMax                        = 37,
  81.     adMax                        = 37,
  82.     subOver                        = 38,
  83.     adMin                        = 39,
  84.     ditherCopy                    = 64,
  85. /* Transparent mode constant */
  86.     transparent                    = 36,
  87.     italicBit                    = 1,
  88.     ulineBit                    = 2,
  89.     outlineBit                    = 3,
  90.     shadowBit                    = 4,
  91.     condenseBit                    = 5,
  92.     extendBit                    = 6,
  93. /* QuickDraw color separation constants */
  94.     normalBit                    = 0,                            /*normal screen mapping*/
  95.     inverseBit                    = 1,                            /*inverse screen mapping*/
  96.     redBit                        = 4,                            /*RGB additive mapping*/
  97.     greenBit                    = 3,
  98.     blueBit                        = 2,
  99.     cyanBit                        = 8,                            /*CMYBk subtractive mapping*/
  100.     magentaBit                    = 7,
  101.     yellowBit                    = 6,
  102.     blackBit                    = 5,
  103.     blackColor                    = 33,                            /*colors expressed in these mappings*/
  104.     whiteColor                    = 30,
  105.     redColor                    = 205
  106. };
  107.  
  108. enum {
  109.     greenColor                    = 341,
  110.     blueColor                    = 409,
  111.     cyanColor                    = 273,
  112.     magentaColor                = 137,
  113.     yellowColor                    = 69,
  114.     picLParen                    = 0,                            /*standard picture comments*/
  115.     picRParen                    = 1,
  116.     clutType                    = 0,                            /*0 if lookup table*/
  117.     fixedType                    = 1,                            /*1 if fixed table*/
  118.     directType                    = 2,                            /*2 if direct values*/
  119.     gdDevType                    = 0                                /*0 = monochrome 1 = color*/
  120. };
  121.  
  122. enum {
  123.     interlacedDevice            = 2,                            /* 1 if single pixel lines look bad */
  124.     roundedDevice                = 5,                            /* 1 if device has been “rounded” into the GrayRgn */
  125.     hasAuxMenuBar                = 6,                            /* 1 if device has an aux menu bar on it */
  126.     burstDevice                    = 7,
  127.     ext32Device                    = 8,
  128.     ramInit                        = 10,                            /*1 if initialized from 'scrn' resource*/
  129.     mainScreen                    = 11,                            /* 1 if main screen */
  130.     allInit                        = 12,                            /* 1 if all devices initialized */
  131.     screenDevice                = 13,                            /*1 if screen device [not used]*/
  132.     noDriver                    = 14,                            /* 1 if no driver for this GDevice */
  133.     screenActive                = 15,                            /*1 if in use*/
  134.     hiliteBit                    = 7,                            /*flag bit in HiliteMode (lowMem flag)*/
  135.     pHiliteBit                    = 0,                            /*flag bit in HiliteMode used with BitClr procedure*/
  136.     defQDColors                    = 127,                            /*resource ID of clut for default QDColors*/
  137. /* pixel type */
  138.     RGBDirect                    = 16,                            /* 16 & 32 bits/pixel pixelType value */
  139. /* pmVersion values */
  140.     baseAddr32                    = 4                                /*pixmap base address is 32-bit address*/
  141. };
  142.  
  143. enum {
  144.     sysPatListID                = 0,
  145.     iBeamCursor                    = 1,
  146.     crossCursor                    = 2,
  147.     plusCursor                    = 3,
  148.     watchCursor                    = 4
  149. };
  150.  
  151. enum {
  152.     frame,
  153.     paint,
  154.     erase,
  155.     invert,
  156.     fill
  157. };
  158.  
  159. typedef SInt8 GrafVerb;
  160.  
  161.  
  162. enum {
  163.     chunky,
  164.     chunkyPlanar,
  165.     planar
  166. };
  167.  
  168. typedef SInt8 PixelType;
  169.  
  170. typedef short Bits16[16];
  171.  
  172. /***************   IMPORTANT NOTE REGARDING Pattern  **************************************
  173.    Patterns were originally defined as:
  174.    
  175.         C:             typedef unsigned char Pattern[8];
  176.         Pascal:        Pattern = PACKED ARRAY [0..7] OF 0..255;
  177.         
  178.    The old array defintion of Pattern would cause 68000 based CPU's to crash in certain circum-
  179.    stances. The new struct definition is safe, but may require source code changes to compile.
  180.    Read the details in TechNote "Platforms & Tools" #PT 38.
  181.     
  182. *********************************************************************************************/
  183. struct Pattern {
  184.     UInt8                            pat[8];
  185. };
  186. typedef struct Pattern Pattern;
  187.  
  188. /*
  189.  ConstPatternParam is now longer needed.  It was first created when Pattern was an array.
  190.  Now that Pattern is a struct, it is more straight forward just add the "const" qualifier
  191.  on the parameter type (e.g. "const Pattern * pat" instead of "ConstPatternParam pat").
  192. */
  193. typedef const Pattern *ConstPatternParam;
  194.  
  195. typedef Pattern *PatPtr;
  196.  
  197. typedef PatPtr *PatHandle;
  198.  
  199. typedef SignedByte QDByte, *QDPtr, **QDHandle;
  200.  
  201. typedef short QDErr;
  202.  
  203.  
  204. enum {
  205.     singleDevicesBit            = 0,
  206.     dontMatchSeedsBit            = 1,
  207.     allDevicesBit                = 2
  208. };
  209.  
  210. enum {
  211.     singleDevices                = 1 << singleDevicesBit,
  212.     dontMatchSeeds                = 1 << dontMatchSeedsBit,
  213.     allDevices                    = 1 << allDevicesBit
  214. };
  215.  
  216. typedef unsigned long DeviceLoopFlags;
  217.  
  218. struct BitMap {
  219.     Ptr                                baseAddr;
  220.     short                            rowBytes;
  221.     Rect                            bounds;
  222. };
  223. typedef struct BitMap BitMap;
  224.  
  225. typedef BitMap *BitMapPtr, **BitMapHandle;
  226.  
  227. struct Cursor {
  228.     Bits16                            data;
  229.     Bits16                            mask;
  230.     Point                            hotSpot;
  231. };
  232. typedef struct Cursor Cursor;
  233.  
  234. typedef Cursor *CursPtr, **CursHandle;
  235.  
  236. struct PenState {
  237.     Point                            pnLoc;
  238.     Point                            pnSize;
  239.     short                            pnMode;
  240.     Pattern                            pnPat;
  241. };
  242. typedef struct PenState PenState;
  243.  
  244. struct Region {
  245.     short                            rgnSize;                    /*size in bytes*/
  246.     Rect                            rgnBBox;                    /*enclosing rectangle*/
  247. };
  248. typedef struct Region Region;
  249.  
  250. typedef Region *RgnPtr, **RgnHandle;
  251.  
  252. struct Picture {
  253.     short                            picSize;
  254.     Rect                            picFrame;
  255. };
  256. typedef struct Picture Picture;
  257.  
  258. typedef Picture *PicPtr, **PicHandle;
  259.  
  260. struct Polygon {
  261.     short                            polySize;
  262.     Rect                            polyBBox;
  263.     Point                            polyPoints[1];
  264. };
  265. typedef struct Polygon Polygon;
  266.  
  267. typedef Polygon *PolyPtr, **PolyHandle;
  268.  
  269. typedef pascal void (*QDTextProcPtr)(short byteCount, Ptr textBuf, Point numer, Point denom);
  270. typedef pascal void (*QDLineProcPtr)(Point newPt);
  271. typedef pascal void (*QDRectProcPtr)(GrafVerb verb, Rect *r);
  272. typedef pascal void (*QDRRectProcPtr)(GrafVerb verb, Rect *r, short ovalWidth, short ovalHeight);
  273. typedef pascal void (*QDOvalProcPtr)(GrafVerb verb, Rect *r);
  274. typedef pascal void (*QDArcProcPtr)(GrafVerb verb, Rect *r, short startAngle, short arcAngle);
  275. typedef pascal void (*QDPolyProcPtr)(GrafVerb verb, PolyHandle poly);
  276. typedef pascal void (*QDRgnProcPtr)(GrafVerb verb, RgnHandle rgn);
  277. typedef pascal void (*QDBitsProcPtr)(BitMap *srcBits, Rect *srcRect, Rect *dstRect, short mode, RgnHandle maskRgn);
  278. typedef pascal void (*QDCommentProcPtr)(short kind, short dataSize, Handle dataHandle);
  279. typedef pascal short (*QDTxMeasProcPtr)(short byteCount, Ptr textAddr, Point *numer, Point *denom, FontInfo *info);
  280. typedef pascal void (*QDGetPicProcPtr)(Ptr dataPtr, short byteCount);
  281. typedef pascal void (*QDPutPicProcPtr)(Ptr dataPtr, short byteCount);
  282. typedef pascal void (*QDOpcodeProcPtr)(Rect *fromRect, Rect *toRect, short opcode, short version);
  283. typedef pascal void (*QDJShieldCursorProcPtr)(short left, short top, short right, short bottom);
  284.  
  285. #if GENERATINGCFM
  286. typedef UniversalProcPtr QDTextUPP;
  287. typedef UniversalProcPtr QDLineUPP;
  288. typedef UniversalProcPtr QDRectUPP;
  289. typedef UniversalProcPtr QDRRectUPP;
  290. typedef UniversalProcPtr QDOvalUPP;
  291. typedef UniversalProcPtr QDArcUPP;
  292. typedef UniversalProcPtr QDPolyUPP;
  293. typedef UniversalProcPtr QDRgnUPP;
  294. typedef UniversalProcPtr QDBitsUPP;
  295. typedef UniversalProcPtr QDCommentUPP;
  296. typedef UniversalProcPtr QDTxMeasUPP;
  297. typedef UniversalProcPtr QDGetPicUPP;
  298. typedef UniversalProcPtr QDPutPicUPP;
  299. typedef UniversalProcPtr QDOpcodeUPP;
  300. typedef UniversalProcPtr QDJShieldCursorUPP;
  301. #else
  302. typedef QDTextProcPtr QDTextUPP;
  303. typedef QDLineProcPtr QDLineUPP;
  304. typedef QDRectProcPtr QDRectUPP;
  305. typedef QDRRectProcPtr QDRRectUPP;
  306. typedef QDOvalProcPtr QDOvalUPP;
  307. typedef QDArcProcPtr QDArcUPP;
  308. typedef QDPolyProcPtr QDPolyUPP;
  309. typedef QDRgnProcPtr QDRgnUPP;
  310. typedef QDBitsProcPtr QDBitsUPP;
  311. typedef QDCommentProcPtr QDCommentUPP;
  312. typedef QDTxMeasProcPtr QDTxMeasUPP;
  313. typedef QDGetPicProcPtr QDGetPicUPP;
  314. typedef QDPutPicProcPtr QDPutPicUPP;
  315. typedef QDOpcodeProcPtr QDOpcodeUPP;
  316. typedef QDJShieldCursorProcPtr QDJShieldCursorUPP;
  317. #endif
  318.  
  319. struct QDProcs {
  320.     QDTextUPP                        textProc;
  321.     QDLineUPP                        lineProc;
  322.     QDRectUPP                        rectProc;
  323.     QDRRectUPP                        rRectProc;
  324.     QDOvalUPP                        ovalProc;
  325.     QDArcUPP                        arcProc;
  326.     QDPolyUPP                        polyProc;
  327.     QDRgnUPP                        rgnProc;
  328.     QDBitsUPP                        bitsProc;
  329.     QDCommentUPP                    commentProc;
  330.     QDTxMeasUPP                        txMeasProc;
  331.     QDGetPicUPP                        getPicProc;
  332.     QDPutPicUPP                        putPicProc;
  333. };
  334. typedef struct QDProcs QDProcs;
  335.  
  336. typedef QDProcs *QDProcsPtr;
  337.  
  338. enum {
  339.     uppQDTextProcInfo = kPascalStackBased
  340.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  341.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  342.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point)))
  343.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point))),
  344.     uppQDLineProcInfo = kPascalStackBased
  345.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Point))),
  346.     uppQDRectProcInfo = kPascalStackBased
  347.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  348.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  349.     uppQDRRectProcInfo = kPascalStackBased
  350.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  351.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  352.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  353.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  354.     uppQDOvalProcInfo = kPascalStackBased
  355.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  356.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  357.     uppQDArcProcInfo = kPascalStackBased
  358.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  359.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  360.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  361.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  362.     uppQDPolyProcInfo = kPascalStackBased
  363.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  364.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(PolyHandle))),
  365.     uppQDRgnProcInfo = kPascalStackBased
  366.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  367.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle))),
  368.     uppQDBitsProcInfo = kPascalStackBased
  369.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(BitMap*)))
  370.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  371.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*)))
  372.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  373.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle))),
  374.     uppQDCommentProcInfo = kPascalStackBased
  375.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  376.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  377.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))),
  378.     uppQDTxMeasProcInfo = kPascalStackBased
  379.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  380.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  381.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  382.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point*)))
  383.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point*)))
  384.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(FontInfo*))),
  385.     uppQDGetPicProcInfo = kPascalStackBased
  386.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  387.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  388.     uppQDPutPicProcInfo = kPascalStackBased
  389.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  390.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  391.     uppQDOpcodeProcInfo = kPascalStackBased
  392.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect*)))
  393.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  394.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  395.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  396.     uppQDJShieldCursorProcInfo = kPascalStackBased
  397.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  398.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  399.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  400.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  401. };
  402.  
  403. #if GENERATINGCFM
  404. #define NewQDTextProc(userRoutine)        \
  405.         (QDTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTextProcInfo, GetCurrentArchitecture())
  406. #define NewQDLineProc(userRoutine)        \
  407.         (QDLineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDLineProcInfo, GetCurrentArchitecture())
  408. #define NewQDRectProc(userRoutine)        \
  409.         (QDRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRectProcInfo, GetCurrentArchitecture())
  410. #define NewQDRRectProc(userRoutine)        \
  411.         (QDRRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture())
  412. #define NewQDOvalProc(userRoutine)        \
  413.         (QDOvalUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOvalProcInfo, GetCurrentArchitecture())
  414. #define NewQDArcProc(userRoutine)        \
  415.         (QDArcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDArcProcInfo, GetCurrentArchitecture())
  416. #define NewQDPolyProc(userRoutine)        \
  417.         (QDPolyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPolyProcInfo, GetCurrentArchitecture())
  418. #define NewQDRgnProc(userRoutine)        \
  419.         (QDRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRgnProcInfo, GetCurrentArchitecture())
  420. #define NewQDBitsProc(userRoutine)        \
  421.         (QDBitsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDBitsProcInfo, GetCurrentArchitecture())
  422. #define NewQDCommentProc(userRoutine)        \
  423.         (QDCommentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture())
  424. #define NewQDTxMeasProc(userRoutine)        \
  425.         (QDTxMeasUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture())
  426. #define NewQDGetPicProc(userRoutine)        \
  427.         (QDGetPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture())
  428. #define NewQDPutPicProc(userRoutine)        \
  429.         (QDPutPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture())
  430. #define NewQDOpcodeProc(userRoutine)        \
  431.         (QDOpcodeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture())
  432. #define NewQDJShieldCursorProc(userRoutine)        \
  433.         (QDJShieldCursorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, GetCurrentArchitecture())
  434. #else
  435. #define NewQDTextProc(userRoutine)        \
  436.         ((QDTextUPP) (userRoutine))
  437. #define NewQDLineProc(userRoutine)        \
  438.         ((QDLineUPP) (userRoutine))
  439. #define NewQDRectProc(userRoutine)        \
  440.         ((QDRectUPP) (userRoutine))
  441. #define NewQDRRectProc(userRoutine)        \
  442.         ((QDRRectUPP) (userRoutine))
  443. #define NewQDOvalProc(userRoutine)        \
  444.         ((QDOvalUPP) (userRoutine))
  445. #define NewQDArcProc(userRoutine)        \
  446.         ((QDArcUPP) (userRoutine))
  447. #define NewQDPolyProc(userRoutine)        \
  448.         ((QDPolyUPP) (userRoutine))
  449. #define NewQDRgnProc(userRoutine)        \
  450.         ((QDRgnUPP) (userRoutine))
  451. #define NewQDBitsProc(userRoutine)        \
  452.         ((QDBitsUPP) (userRoutine))
  453. #define NewQDCommentProc(userRoutine)        \
  454.         ((QDCommentUPP) (userRoutine))
  455. #define NewQDTxMeasProc(userRoutine)        \
  456.         ((QDTxMeasUPP) (userRoutine))
  457. #define NewQDGetPicProc(userRoutine)        \
  458.         ((QDGetPicUPP) (userRoutine))
  459. #define NewQDPutPicProc(userRoutine)        \
  460.         ((QDPutPicUPP) (userRoutine))
  461. #define NewQDOpcodeProc(userRoutine)        \
  462.         ((QDOpcodeUPP) (userRoutine))
  463. #define NewQDJShieldCursorProc(userRoutine)        \
  464.         ((QDJShieldCursorUPP) (userRoutine))
  465. #endif
  466.  
  467. #if GENERATINGCFM
  468. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  469.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTextProcInfo, (byteCount), (textBuf), (numer), (denom))
  470. #define CallQDLineProc(userRoutine, newPt)        \
  471.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDLineProcInfo, (newPt))
  472. #define CallQDRectProc(userRoutine, verb, r)        \
  473.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRectProcInfo, (verb), (r))
  474. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  475.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRRectProcInfo, (verb), (r), (ovalWidth), (ovalHeight))
  476. #define CallQDOvalProc(userRoutine, verb, r)        \
  477.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOvalProcInfo, (verb), (r))
  478. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  479.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDArcProcInfo, (verb), (r), (startAngle), (arcAngle))
  480. #define CallQDPolyProc(userRoutine, verb, poly)        \
  481.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPolyProcInfo, (verb), (poly))
  482. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  483.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRgnProcInfo, (verb), (rgn))
  484. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  485.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDBitsProcInfo, (srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  486. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  487.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDCommentProcInfo, (kind), (dataSize), (dataHandle))
  488. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  489.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTxMeasProcInfo, (byteCount), (textAddr), (numer), (denom), (info))
  490. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  491.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDGetPicProcInfo, (dataPtr), (byteCount))
  492. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  493.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPutPicProcInfo, (dataPtr), (byteCount))
  494. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  495.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOpcodeProcInfo, (fromRect), (toRect), (opcode), (version))
  496. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  497.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, (left), (top), (right), (bottom))
  498. #else
  499. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  500.         (*(userRoutine))((byteCount), (textBuf), (numer), (denom))
  501. #define CallQDLineProc(userRoutine, newPt)        \
  502.         (*(userRoutine))((newPt))
  503. #define CallQDRectProc(userRoutine, verb, r)        \
  504.         (*(userRoutine))((verb), (r))
  505. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  506.         (*(userRoutine))((verb), (r), (ovalWidth), (ovalHeight))
  507. #define CallQDOvalProc(userRoutine, verb, r)        \
  508.         (*(userRoutine))((verb), (r))
  509. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  510.         (*(userRoutine))((verb), (r), (startAngle), (arcAngle))
  511. #define CallQDPolyProc(userRoutine, verb, poly)        \
  512.         (*(userRoutine))((verb), (poly))
  513. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  514.         (*(userRoutine))((verb), (rgn))
  515. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  516.         (*(userRoutine))((srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  517. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  518.         (*(userRoutine))((kind), (dataSize), (dataHandle))
  519. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  520.         (*(userRoutine))((byteCount), (textAddr), (numer), (denom), (info))
  521. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  522.         (*(userRoutine))((dataPtr), (byteCount))
  523. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  524.         (*(userRoutine))((dataPtr), (byteCount))
  525. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  526.         (*(userRoutine))((fromRect), (toRect), (opcode), (version))
  527. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  528.         (*(userRoutine))((left), (top), (right), (bottom))
  529. #endif
  530.  
  531. struct GrafPort {
  532.     short                            device;
  533.     BitMap                            portBits;
  534.     Rect                            portRect;
  535.     RgnHandle                        visRgn;
  536.     RgnHandle                        clipRgn;
  537.     Pattern                            bkPat;
  538.     Pattern                            fillPat;
  539.     Point                            pnLoc;
  540.     Point                            pnSize;
  541.     short                            pnMode;
  542.     Pattern                            pnPat;
  543.     short                            pnVis;
  544.     short                            txFont;
  545.     Style                            txFace;                        /*txFace is unpacked byte but push as short*/
  546.     SInt8                            filler;
  547.     short                            txMode;
  548.     short                            txSize;
  549.     Fixed                            spExtra;
  550.     long                            fgColor;
  551.     long                            bkColor;
  552.     short                            colrBit;
  553.     short                            patStretch;
  554.     Handle                            picSave;
  555.     Handle                            rgnSave;
  556.     Handle                            polySave;
  557.     QDProcsPtr                        grafProcs;
  558. };
  559. typedef struct GrafPort GrafPort;
  560.  
  561. typedef GrafPort *GrafPtr;
  562.  
  563. /*
  564.  *    This set of definitions "belongs" in Windows.
  565.  *    But, there is a circularity in the headers where Windows includes Controls and
  566.  *    Controls includes Windows. To break the circle, the information
  567.  *    needed by Controls is moved from Windows to Quickdraw.
  568.  */
  569. typedef GrafPtr WindowPtr;
  570.  
  571. /*
  572.     Set STRICT_WINDOWS to 1 to make sure your code 
  573.     doesn't access the window record directly
  574. */
  575. #ifndef STRICT_WINDOWS
  576. #define STRICT_WINDOWS 0
  577. #endif
  578. #if STRICT_WINDOWS
  579. typedef struct OpaqueWindowRef *WindowRef;
  580.  
  581. #else
  582. typedef WindowPtr WindowRef;
  583.  
  584. #endif
  585. typedef UInt16 DragConstraint;
  586.  
  587.  
  588. enum {
  589.     kNoConstraint                = 0,
  590.     kVerticalConstraint            = 1,
  591.     kHorizontalConstraint        = 2
  592. };
  593.  
  594. /*
  595.  *    Here ends the list of things that "belong" in Windows.
  596.  */
  597. struct RGBColor {
  598.     unsigned short                    red;                        /*magnitude of red component*/
  599.     unsigned short                    green;                        /*magnitude of green component*/
  600.     unsigned short                    blue;                        /*magnitude of blue component*/
  601. };
  602. typedef struct RGBColor RGBColor, *RGBColorPtr, **RGBColorHdl;
  603.  
  604. typedef pascal void (*DragGrayRgnProcPtr)(void);
  605. typedef pascal Boolean (*ColorSearchProcPtr)(RGBColor *rgb, long *position);
  606. typedef pascal Boolean (*ColorComplementProcPtr)(RGBColor *rgb);
  607.  
  608. #if GENERATINGCFM
  609. typedef UniversalProcPtr DragGrayRgnUPP;
  610. typedef UniversalProcPtr ColorSearchUPP;
  611. typedef UniversalProcPtr ColorComplementUPP;
  612. #else
  613. typedef DragGrayRgnProcPtr DragGrayRgnUPP;
  614. typedef ColorSearchProcPtr ColorSearchUPP;
  615. typedef ColorComplementProcPtr ColorComplementUPP;
  616. #endif
  617.  
  618. enum {
  619.     uppDragGrayRgnProcInfo = kPascalStackBased,
  620.     uppColorSearchProcInfo = kPascalStackBased
  621.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  622.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor*)))
  623.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*))),
  624.     uppColorComplementProcInfo = kPascalStackBased
  625.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  626.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor*)))
  627. };
  628.  
  629. #if GENERATINGCFM
  630. #define NewDragGrayRgnProc(userRoutine)        \
  631.         (DragGrayRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, GetCurrentArchitecture())
  632. #define NewColorSearchProc(userRoutine)        \
  633.         (ColorSearchUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorSearchProcInfo, GetCurrentArchitecture())
  634. #define NewColorComplementProc(userRoutine)        \
  635.         (ColorComplementUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorComplementProcInfo, GetCurrentArchitecture())
  636. #else
  637. #define NewDragGrayRgnProc(userRoutine)        \
  638.         ((DragGrayRgnUPP) (userRoutine))
  639. #define NewColorSearchProc(userRoutine)        \
  640.         ((ColorSearchUPP) (userRoutine))
  641. #define NewColorComplementProc(userRoutine)        \
  642.         ((ColorComplementUPP) (userRoutine))
  643. #endif
  644.  
  645. #if GENERATINGCFM
  646. #define CallDragGrayRgnProc(userRoutine)        \
  647.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDragGrayRgnProcInfo)
  648. #define CallColorSearchProc(userRoutine, rgb, position)        \
  649.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorSearchProcInfo, (rgb), (position))
  650. #define CallColorComplementProc(userRoutine, rgb)        \
  651.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorComplementProcInfo, (rgb))
  652. #else
  653. #define CallDragGrayRgnProc(userRoutine)        \
  654.         (*(userRoutine))()
  655. #define CallColorSearchProc(userRoutine, rgb, position)        \
  656.         (*(userRoutine))((rgb), (position))
  657. #define CallColorComplementProc(userRoutine, rgb)        \
  658.         (*(userRoutine))((rgb))
  659. #endif
  660.  
  661. struct ColorSpec {
  662.     short                            value;                        /*index or other value*/
  663.     RGBColor                        rgb;                        /*true color*/
  664. };
  665. typedef struct ColorSpec ColorSpec;
  666.  
  667. typedef ColorSpec *ColorSpecPtr;
  668.  
  669. typedef ColorSpec CSpecArray[1];
  670.  
  671. struct xColorSpec {
  672.     short                            value;                        /*index or other value*/
  673.     RGBColor                        rgb;                        /*true color*/
  674.     short                            xalpha;
  675. };
  676. typedef struct xColorSpec xColorSpec;
  677.  
  678. typedef xColorSpec *xColorSpecPtr;
  679.  
  680. typedef xColorSpec xCSpecArray[1];
  681.  
  682. struct ColorTable {
  683.     long                            ctSeed;                        /*unique identifier for table*/
  684.     short                            ctFlags;                    /*high bit: 0 = PixMap; 1 = device*/
  685.     short                            ctSize;                        /*number of entries in CTTable*/
  686.     CSpecArray                        ctTable;                    /*array [0..0] of ColorSpec*/
  687. };
  688. typedef struct ColorTable ColorTable, *CTabPtr, **CTabHandle;
  689.  
  690. struct MatchRec {
  691.     unsigned short                    red;
  692.     unsigned short                    green;
  693.     unsigned short                    blue;
  694.     long                            matchData;
  695. };
  696. typedef struct MatchRec MatchRec;
  697.  
  698. struct PixMap {
  699.     Ptr                                baseAddr;                    /*pointer to pixels*/
  700.     short                            rowBytes;                    /*offset to next line*/
  701.     Rect                            bounds;                        /*encloses bitmap*/
  702.     short                            pmVersion;                    /*pixMap version number*/
  703.     short                            packType;                    /*defines packing format*/
  704.     long                            packSize;                    /*length of pixel data*/
  705.     Fixed                            hRes;                        /*horiz. resolution (ppi)*/
  706.     Fixed                            vRes;                        /*vert. resolution (ppi)*/
  707.     short                            pixelType;                    /*defines pixel type*/
  708.     short                            pixelSize;                    /*# bits in pixel*/
  709.     short                            cmpCount;                    /*# components in pixel*/
  710.     short                            cmpSize;                    /*# bits per component*/
  711.     long                            planeBytes;                    /*offset to next plane*/
  712.     CTabHandle                        pmTable;                    /*color map for this pixMap*/
  713.     long                            pmReserved;                    /*for future use. MUST BE 0*/
  714. };
  715. typedef struct PixMap PixMap, *PixMapPtr, **PixMapHandle;
  716.  
  717. struct PixPat {
  718.     short                            patType;                    /*type of pattern*/
  719.     PixMapHandle                    patMap;                        /*the pattern's pixMap*/
  720.     Handle                            patData;                    /*pixmap's data*/
  721.     Handle                            patXData;                    /*expanded Pattern data*/
  722.     short                            patXValid;                    /*flags whether expanded Pattern valid*/
  723.     Handle                            patXMap;                    /*Handle to expanded Pattern data*/
  724.     Pattern                            pat1Data;                    /*old-Style pattern/RGB color*/
  725. };
  726. typedef struct PixPat PixPat, *PixPatPtr, **PixPatHandle;
  727.  
  728. struct CCrsr {
  729.     short                            crsrType;                    /*type of cursor*/
  730.     PixMapHandle                    crsrMap;                    /*the cursor's pixmap*/
  731.     Handle                            crsrData;                    /*cursor's data*/
  732.     Handle                            crsrXData;                    /*expanded cursor data*/
  733.     short                            crsrXValid;                    /*depth of expanded data (0 if none)*/
  734.     Handle                            crsrXHandle;                /*future use*/
  735.     Bits16                            crsr1Data;                    /*one-bit cursor*/
  736.     Bits16                            crsrMask;                    /*cursor's mask*/
  737.     Point                            crsrHotSpot;                /*cursor's hotspot*/
  738.     long                            crsrXTable;                    /*private*/
  739.     long                            crsrID;                        /*private*/
  740. };
  741. typedef struct CCrsr CCrsr, *CCrsrPtr, **CCrsrHandle;
  742.  
  743. #if OLDROUTINELOCATIONS
  744. struct CIcon {
  745.     PixMap                            iconPMap;                    /*the icon's pixMap*/
  746.     BitMap                            iconMask;                    /*the icon's mask*/
  747.     BitMap                            iconBMap;                    /*the icon's bitMap*/
  748.     Handle                            iconData;                    /*the icon's data*/
  749.     short                            iconMaskData[1];            /*icon's mask and BitMap data*/
  750. };
  751. typedef struct CIcon CIcon, *CIconPtr, **CIconHandle;
  752.  
  753. #endif
  754. struct GammaTbl {
  755.     short                            gVersion;                    /*gamma version number*/
  756.     short                            gType;                        /*gamma data type*/
  757.     short                            gFormulaSize;                /*Formula data size*/
  758.     short                            gChanCnt;                    /*number of channels of data*/
  759.     short                            gDataCnt;                    /*number of values/channel*/
  760.     short                            gDataWidth;                    /*bits/corrected value (data packed to next larger byte size)*/
  761.     short                            gFormulaData[1];            /*data for formulas followed by gamma values*/
  762. };
  763. typedef struct GammaTbl GammaTbl, *GammaTblPtr, **GammaTblHandle;
  764.  
  765. struct ITab {
  766.     long                            iTabSeed;                    /*copy of CTSeed from source CTable*/
  767.     short                            iTabRes;                    /*bits/channel resolution of iTable*/
  768.     Byte                            iTTable[1];                    /*byte colortable index values*/
  769. };
  770. typedef struct ITab ITab, *ITabPtr, **ITabHandle;
  771.  
  772. struct SProcRec {
  773.     Handle                            nxtSrch;                    /*SProcHndl Handle to next SProcRec*/
  774.     ColorSearchUPP                    srchProc;                    /*search procedure proc ptr*/
  775. };
  776. typedef struct SProcRec SProcRec, *SProcPtr, **SProcHndl;
  777.  
  778. struct CProcRec {
  779.     Handle                            nxtComp;                    /*CProcHndl Handle to next CProcRec*/
  780.     ColorComplementUPP                compProc;                    /*complement procedure proc ptr*/
  781. };
  782. typedef struct CProcRec CProcRec, *CProcPtr, **CProcHndl;
  783.  
  784. struct GDevice {
  785.     short                            gdRefNum;                    /*driver's unit number*/
  786.     short                            gdID;                        /*client ID for search procs*/
  787.     short                            gdType;                        /*fixed/CLUT/direct*/
  788.     ITabHandle                        gdITable;                    /*Handle to inverse lookup table*/
  789.     short                            gdResPref;                    /*preferred resolution of GDITable*/
  790.     SProcHndl                        gdSearchProc;                /*search proc list head*/
  791.     CProcHndl                        gdCompProc;                    /*complement proc list*/
  792.     short                            gdFlags;                    /*grafDevice flags word*/
  793.     PixMapHandle                    gdPMap;                        /*describing pixMap*/
  794.     long                            gdRefCon;                    /*reference value*/
  795.     Handle                            gdNextGD;                    /*GDHandle Handle of next gDevice*/
  796.     Rect                            gdRect;                        /* device's bounds in global coordinates*/
  797.     long                            gdMode;                        /*device's current mode*/
  798.     short                            gdCCBytes;                    /*depth of expanded cursor data*/
  799.     short                            gdCCDepth;                    /*depth of expanded cursor data*/
  800.     Handle                            gdCCXData;                    /*Handle to cursor's expanded data*/
  801.     Handle                            gdCCXMask;                    /*Handle to cursor's expanded mask*/
  802.     long                            gdReserved;                    /*future use. MUST BE 0*/
  803. };
  804. typedef struct GDevice GDevice, *GDPtr, **GDHandle;
  805.  
  806. struct GrafVars {
  807.     RGBColor                        rgbOpColor;                    /*color for addPin  subPin and average*/
  808.     RGBColor                        rgbHiliteColor;                /*color for hiliting*/
  809.     Handle                            pmFgColor;                    /*palette Handle for foreground color*/
  810.     short                            pmFgIndex;                    /*index value for foreground*/
  811.     Handle                            pmBkColor;                    /*palette Handle for background color*/
  812.     short                            pmBkIndex;                    /*index value for background*/
  813.     short                            pmFlags;                    /*flags for Palette Manager*/
  814. };
  815. typedef struct GrafVars GrafVars, *GVarPtr, **GVarHandle;
  816.  
  817. struct CQDProcs {
  818.     QDTextUPP                        textProc;
  819.     QDLineUPP                        lineProc;
  820.     QDRectUPP                        rectProc;
  821.     QDRRectUPP                        rRectProc;
  822.     QDOvalUPP                        ovalProc;
  823.     QDArcUPP                        arcProc;
  824.     QDPolyUPP                        polyProc;
  825.     QDRgnUPP                        rgnProc;
  826.     QDBitsUPP                        bitsProc;
  827.     QDCommentUPP                    commentProc;
  828.     QDTxMeasUPP                        txMeasProc;
  829.     QDGetPicUPP                        getPicProc;
  830.     QDPutPicUPP                        putPicProc;
  831.     QDOpcodeUPP                        opcodeProc;                    /*fields added to QDProcs*/
  832.     UniversalProcPtr                newProc1;
  833.     UniversalProcPtr                newProc2;
  834.     UniversalProcPtr                newProc3;
  835.     UniversalProcPtr                newProc4;
  836.     UniversalProcPtr                newProc5;
  837.     UniversalProcPtr                newProc6;
  838. };
  839. typedef struct CQDProcs CQDProcs, *CQDProcsPtr;
  840.  
  841. struct CGrafPort {
  842.     short                            device;
  843.     PixMapHandle                    portPixMap;                    /*port's pixel map*/
  844.     short                            portVersion;                /*high 2 bits always set*/
  845.     Handle                            grafVars;                    /*Handle to more fields*/
  846.     short                            chExtra;                    /*character extra*/
  847.     short                            pnLocHFrac;                    /*pen fraction*/
  848.     Rect                            portRect;
  849.     RgnHandle                        visRgn;
  850.     RgnHandle                        clipRgn;
  851.     PixPatHandle                    bkPixPat;                    /*background pattern*/
  852.     RGBColor                        rgbFgColor;                    /*RGB components of fg*/
  853.     RGBColor                        rgbBkColor;                    /*RGB components of bk*/
  854.     Point                            pnLoc;
  855.     Point                            pnSize;
  856.     short                            pnMode;
  857.     PixPatHandle                    pnPixPat;                    /*pen's pattern*/
  858.     PixPatHandle                    fillPixPat;                    /*fill pattern*/
  859.     short                            pnVis;
  860.     short                            txFont;
  861.     Style                            txFace;                        /*txFace is unpacked byte  push as short*/
  862.     SInt8                            filler;
  863.     short                            txMode;
  864.     short                            txSize;
  865.     Fixed                            spExtra;
  866.     long                            fgColor;
  867.     long                            bkColor;
  868.     short                            colrBit;
  869.     short                            patStretch;
  870.     Handle                            picSave;
  871.     Handle                            rgnSave;
  872.     Handle                            polySave;
  873.     CQDProcsPtr                        grafProcs;
  874. };
  875. typedef struct CGrafPort CGrafPort, *CGrafPtr;
  876.  
  877. typedef CGrafPtr CWindowPtr;
  878.  
  879. struct ReqListRec {
  880.     short                            reqLSize;                    /*request list size*/
  881.     short                            reqLData[1];                /*request list data*/
  882. };
  883. typedef struct ReqListRec ReqListRec;
  884.  
  885. struct OpenCPicParams {
  886.     Rect                            srcRect;
  887.     Fixed                            hRes;
  888.     Fixed                            vRes;
  889.     short                            version;
  890.     short                            reserved1;
  891.     long                            reserved2;
  892. };
  893. typedef struct OpenCPicParams OpenCPicParams;
  894.  
  895.  
  896. enum {
  897.     kCursorImageMajorVersion    = 0x0001,
  898.     kCursorImageMinorVersion    = 0x0000
  899. };
  900.  
  901. struct CursorImageRec {
  902.     UInt16                            majorVersion;
  903.     UInt16                            minorVersion;
  904.     PixMapHandle                    cursorPixMap;
  905.     BitMapHandle                    cursorBitMask;
  906. };
  907. typedef struct CursorImageRec CursorImageRec, *CursorImagePtr;
  908.  
  909. typedef pascal void (*DeviceLoopDrawingProcPtr)(short depth, short deviceFlags, GDHandle targetDevice, long userData);
  910.  
  911. #if GENERATINGCFM
  912. typedef UniversalProcPtr DeviceLoopDrawingUPP;
  913. #else
  914. typedef DeviceLoopDrawingProcPtr DeviceLoopDrawingUPP;
  915. #endif
  916.  
  917. enum {
  918.     uppDeviceLoopDrawingProcInfo = kPascalStackBased
  919.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  920.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  921.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(GDHandle)))
  922.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  923. };
  924.  
  925. #if GENERATINGCFM
  926. #define NewDeviceLoopDrawingProc(userRoutine)        \
  927.         (DeviceLoopDrawingUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, GetCurrentArchitecture())
  928. #else
  929. #define NewDeviceLoopDrawingProc(userRoutine)        \
  930.         ((DeviceLoopDrawingUPP) (userRoutine))
  931. #endif
  932.  
  933. #if GENERATINGCFM
  934. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  935.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, (depth), (deviceFlags), (targetDevice), (userData))
  936. #else
  937. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  938.         (*(userRoutine))((depth), (deviceFlags), (targetDevice), (userData))
  939. #endif
  940.  
  941. struct QDGlobals {
  942.     char                            privates[76];
  943.     long                            randSeed;
  944.     BitMap                            screenBits;
  945.     Cursor                            arrow;
  946.     Pattern                            dkGray;
  947.     Pattern                            ltGray;
  948.     Pattern                            gray;
  949.     Pattern                            black;
  950.     Pattern                            white;
  951.     GrafPtr                            thePort;
  952. };
  953. typedef struct QDGlobals QDGlobals, *QDGlobalsPtr, **QDGlobalsHdl;
  954.  
  955. extern QDGlobals qd;
  956.  
  957. extern pascal void InitGraf(void *globalPtr)
  958.  ONEWORDINLINE(0xA86E);
  959. extern pascal void OpenPort(GrafPtr port)
  960.  ONEWORDINLINE(0xA86F);
  961. extern pascal void InitPort(GrafPtr port)
  962.  ONEWORDINLINE(0xA86D);
  963. extern pascal void ClosePort(GrafPtr port)
  964.  ONEWORDINLINE(0xA87D);
  965. extern pascal void SetPort(GrafPtr port)
  966.  ONEWORDINLINE(0xA873);
  967. extern pascal void GetPort(GrafPtr *port)
  968.  ONEWORDINLINE(0xA874);
  969. extern pascal void GrafDevice(short device)
  970.  ONEWORDINLINE(0xA872);
  971. extern pascal void SetPortBits(const BitMap *bm)
  972.  ONEWORDINLINE(0xA875);
  973. extern pascal void PortSize(short width, short height)
  974.  ONEWORDINLINE(0xA876);
  975. extern pascal void MovePortTo(short leftGlobal, short topGlobal)
  976.  ONEWORDINLINE(0xA877);
  977. extern pascal void SetOrigin(short h, short v)
  978.  ONEWORDINLINE(0xA878);
  979. extern pascal void SetClip(RgnHandle rgn)
  980.  ONEWORDINLINE(0xA879);
  981. extern pascal void GetClip(RgnHandle rgn)
  982.  ONEWORDINLINE(0xA87A);
  983. extern pascal void ClipRect(const Rect *r)
  984.  ONEWORDINLINE(0xA87B);
  985. extern pascal void BackPat(const Pattern *pat)
  986.  ONEWORDINLINE(0xA87C);
  987. extern pascal void InitCursor(void)
  988.  ONEWORDINLINE(0xA850);
  989. extern pascal void SetCursor(const Cursor *crsr)
  990.  ONEWORDINLINE(0xA851);
  991. extern pascal void HideCursor(void)
  992.  ONEWORDINLINE(0xA852);
  993. extern pascal void ShowCursor(void)
  994.  ONEWORDINLINE(0xA853);
  995. extern pascal void ObscureCursor(void)
  996.  ONEWORDINLINE(0xA856);
  997. extern pascal void HidePen(void)
  998.  ONEWORDINLINE(0xA896);
  999. extern pascal void ShowPen(void)
  1000.  ONEWORDINLINE(0xA897);
  1001. extern pascal void GetPen(Point *pt)
  1002.  ONEWORDINLINE(0xA89A);
  1003. extern pascal void GetPenState(PenState *pnState)
  1004.  ONEWORDINLINE(0xA898);
  1005. extern pascal void SetPenState(const PenState *pnState)
  1006.  ONEWORDINLINE(0xA899);
  1007. extern pascal void PenSize(short width, short height)
  1008.  ONEWORDINLINE(0xA89B);
  1009. extern pascal void PenMode(short mode)
  1010.  ONEWORDINLINE(0xA89C);
  1011. extern pascal void PenPat(const Pattern *pat)
  1012.  ONEWORDINLINE(0xA89D);
  1013. extern pascal void PenNormal(void)
  1014.  ONEWORDINLINE(0xA89E);
  1015. extern pascal void MoveTo(short h, short v)
  1016.  ONEWORDINLINE(0xA893);
  1017. extern pascal void Move(short dh, short dv)
  1018.  ONEWORDINLINE(0xA894);
  1019. extern pascal void LineTo(short h, short v)
  1020.  ONEWORDINLINE(0xA891);
  1021. extern pascal void Line(short dh, short dv)
  1022.  ONEWORDINLINE(0xA892);
  1023. extern pascal void ForeColor(long color)
  1024.  ONEWORDINLINE(0xA862);
  1025. extern pascal void BackColor(long color)
  1026.  ONEWORDINLINE(0xA863);
  1027. extern pascal void ColorBit(short whichBit)
  1028.  ONEWORDINLINE(0xA864);
  1029. extern pascal void SetRect(Rect *r, short left, short top, short right, short bottom)
  1030.  ONEWORDINLINE(0xA8A7);
  1031. extern pascal void OffsetRect(Rect *r, short dh, short dv)
  1032.  ONEWORDINLINE(0xA8A8);
  1033. extern pascal void InsetRect(Rect *r, short dh, short dv)
  1034.  ONEWORDINLINE(0xA8A9);
  1035. extern pascal Boolean SectRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  1036.  ONEWORDINLINE(0xA8AA);
  1037. extern pascal void UnionRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  1038.  ONEWORDINLINE(0xA8AB);
  1039. extern pascal Boolean EqualRect(const Rect *rect1, const Rect *rect2)
  1040.  ONEWORDINLINE(0xA8A6);
  1041. extern pascal Boolean EmptyRect(const Rect *r)
  1042.  ONEWORDINLINE(0xA8AE);
  1043. extern pascal void FrameRect(const Rect *r)
  1044.  ONEWORDINLINE(0xA8A1);
  1045. extern pascal void PaintRect(const Rect *r)
  1046.  ONEWORDINLINE(0xA8A2);
  1047. extern pascal void EraseRect(const Rect *r)
  1048.  ONEWORDINLINE(0xA8A3);
  1049. extern pascal void InvertRect(const Rect *r)
  1050.  ONEWORDINLINE(0xA8A4);
  1051. extern pascal void FillRect(const Rect *r, const Pattern *pat)
  1052.  ONEWORDINLINE(0xA8A5);
  1053. extern pascal void FrameOval(const Rect *r)
  1054.  ONEWORDINLINE(0xA8B7);
  1055. extern pascal void PaintOval(const Rect *r)
  1056.  ONEWORDINLINE(0xA8B8);
  1057. extern pascal void EraseOval(const Rect *r)
  1058.  ONEWORDINLINE(0xA8B9);
  1059. extern pascal void InvertOval(const Rect *r)
  1060.  ONEWORDINLINE(0xA8BA);
  1061. extern pascal void FillOval(const Rect *r, const Pattern *pat)
  1062.  ONEWORDINLINE(0xA8BB);
  1063. extern pascal void FrameRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1064.  ONEWORDINLINE(0xA8B0);
  1065. extern pascal void PaintRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1066.  ONEWORDINLINE(0xA8B1);
  1067. extern pascal void EraseRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1068.  ONEWORDINLINE(0xA8B2);
  1069. extern pascal void InvertRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1070.  ONEWORDINLINE(0xA8B3);
  1071. extern pascal void FillRoundRect(const Rect *r, short ovalWidth, short ovalHeight, const Pattern *pat)
  1072.  ONEWORDINLINE(0xA8B4);
  1073. extern pascal void FrameArc(const Rect *r, short startAngle, short arcAngle)
  1074.  ONEWORDINLINE(0xA8BE);
  1075. extern pascal void PaintArc(const Rect *r, short startAngle, short arcAngle)
  1076.  ONEWORDINLINE(0xA8BF);
  1077. extern pascal void EraseArc(const Rect *r, short startAngle, short arcAngle)
  1078.  ONEWORDINLINE(0xA8C0);
  1079. extern pascal void InvertArc(const Rect *r, short startAngle, short arcAngle)
  1080.  ONEWORDINLINE(0xA8C1);
  1081. extern pascal void FillArc(const Rect *r, short startAngle, short arcAngle, const Pattern *pat)
  1082.  ONEWORDINLINE(0xA8C2);
  1083. extern pascal RgnHandle NewRgn(void)
  1084.  ONEWORDINLINE(0xA8D8);
  1085. extern pascal void OpenRgn(void)
  1086.  ONEWORDINLINE(0xA8DA);
  1087. extern pascal void CloseRgn(RgnHandle dstRgn)
  1088.  ONEWORDINLINE(0xA8DB);
  1089. #if !SystemSevenOrLater
  1090. extern pascal OSErr BitMapToRegionGlue(RgnHandle region, const BitMap *bMap);
  1091. #endif
  1092. extern pascal OSErr BitMapToRegion(RgnHandle region, const BitMap *bMap)
  1093.  ONEWORDINLINE(0xA8D7);
  1094. extern pascal void DisposeRgn(RgnHandle rgn)
  1095.  ONEWORDINLINE(0xA8D9);
  1096. extern pascal void CopyRgn(RgnHandle srcRgn, RgnHandle dstRgn)
  1097.  ONEWORDINLINE(0xA8DC);
  1098. extern pascal void SetEmptyRgn(RgnHandle rgn)
  1099.  ONEWORDINLINE(0xA8DD);
  1100. extern pascal void SetRectRgn(RgnHandle rgn, short left, short top, short right, short bottom)
  1101.  ONEWORDINLINE(0xA8DE);
  1102. extern pascal void RectRgn(RgnHandle rgn, const Rect *r)
  1103.  ONEWORDINLINE(0xA8DF);
  1104. extern pascal void OffsetRgn(RgnHandle rgn, short dh, short dv)
  1105.  ONEWORDINLINE(0xA8E0);
  1106. extern pascal void InsetRgn(RgnHandle rgn, short dh, short dv)
  1107.  ONEWORDINLINE(0xA8E1);
  1108. extern pascal void SectRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1109.  ONEWORDINLINE(0xA8E4);
  1110. extern pascal void UnionRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1111.  ONEWORDINLINE(0xA8E5);
  1112. extern pascal void DiffRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1113.  ONEWORDINLINE(0xA8E6);
  1114. extern pascal void XorRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1115.  ONEWORDINLINE(0xA8E7);
  1116. extern pascal Boolean RectInRgn(const Rect *r, RgnHandle rgn)
  1117.  ONEWORDINLINE(0xA8E9);
  1118. extern pascal Boolean EqualRgn(RgnHandle rgnA, RgnHandle rgnB)
  1119.  ONEWORDINLINE(0xA8E3);
  1120. extern pascal Boolean EmptyRgn(RgnHandle rgn)
  1121.  ONEWORDINLINE(0xA8E2);
  1122. extern pascal void FrameRgn(RgnHandle rgn)
  1123.  ONEWORDINLINE(0xA8D2);
  1124. extern pascal void PaintRgn(RgnHandle rgn)
  1125.  ONEWORDINLINE(0xA8D3);
  1126. extern pascal void EraseRgn(RgnHandle rgn)
  1127.  ONEWORDINLINE(0xA8D4);
  1128. extern pascal void InvertRgn(RgnHandle rgn)
  1129.  ONEWORDINLINE(0xA8D5);
  1130. extern pascal void FillRgn(RgnHandle rgn, const Pattern *pat)
  1131.  ONEWORDINLINE(0xA8D6);
  1132. extern pascal void ScrollRect(const Rect *r, short dh, short dv, RgnHandle updateRgn)
  1133.  ONEWORDINLINE(0xA8EF);
  1134. extern pascal void CopyBits(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1135.  ONEWORDINLINE(0xA8EC);
  1136. extern pascal void SeedFill(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words, short seedH, short seedV)
  1137.  ONEWORDINLINE(0xA839);
  1138. extern pascal void CalcMask(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words)
  1139.  ONEWORDINLINE(0xA838);
  1140. extern pascal void CopyMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect)
  1141.  ONEWORDINLINE(0xA817);
  1142. extern pascal PicHandle OpenPicture(const Rect *picFrame)
  1143.  ONEWORDINLINE(0xA8F3);
  1144. extern pascal void PicComment(short kind, short dataSize, Handle dataHandle)
  1145.  ONEWORDINLINE(0xA8F2);
  1146. extern pascal void ClosePicture(void)
  1147.  ONEWORDINLINE(0xA8F4);
  1148. extern pascal void DrawPicture(PicHandle myPicture, const Rect *dstRect)
  1149.  ONEWORDINLINE(0xA8F6);
  1150. extern pascal void KillPicture(PicHandle myPicture)
  1151.  ONEWORDINLINE(0xA8F5);
  1152. extern pascal PolyHandle OpenPoly(void)
  1153.  ONEWORDINLINE(0xA8CB);
  1154. extern pascal void ClosePoly(void)
  1155.  ONEWORDINLINE(0xA8CC);
  1156. extern pascal void KillPoly(PolyHandle poly)
  1157.  ONEWORDINLINE(0xA8CD);
  1158. extern pascal void OffsetPoly(PolyHandle poly, short dh, short dv)
  1159.  ONEWORDINLINE(0xA8CE);
  1160. extern pascal void FramePoly(PolyHandle poly)
  1161.  ONEWORDINLINE(0xA8C6);
  1162. extern pascal void PaintPoly(PolyHandle poly)
  1163.  ONEWORDINLINE(0xA8C7);
  1164. extern pascal void ErasePoly(PolyHandle poly)
  1165.  ONEWORDINLINE(0xA8C8);
  1166. extern pascal void InvertPoly(PolyHandle poly)
  1167.  ONEWORDINLINE(0xA8C9);
  1168. extern pascal void FillPoly(PolyHandle poly, const Pattern *pat)
  1169.  ONEWORDINLINE(0xA8CA);
  1170. extern pascal void SetPt(Point *pt, short h, short v)
  1171.  ONEWORDINLINE(0xA880);
  1172. extern pascal void LocalToGlobal(Point *pt)
  1173.  ONEWORDINLINE(0xA870);
  1174. extern pascal void GlobalToLocal(Point *pt)
  1175.  ONEWORDINLINE(0xA871);
  1176. extern pascal short Random(void)
  1177.  ONEWORDINLINE(0xA861);
  1178. extern pascal void StuffHex(void *thingPtr, ConstStr255Param s)
  1179.  ONEWORDINLINE(0xA866);
  1180. extern pascal Boolean GetPixel(short h, short v)
  1181.  ONEWORDINLINE(0xA865);
  1182. extern pascal void ScalePt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1183.  ONEWORDINLINE(0xA8F8);
  1184. extern pascal void MapPt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1185.  ONEWORDINLINE(0xA8F9);
  1186. extern pascal void MapRect(Rect *r, const Rect *srcRect, const Rect *dstRect)
  1187.  ONEWORDINLINE(0xA8FA);
  1188. extern pascal void MapRgn(RgnHandle rgn, const Rect *srcRect, const Rect *dstRect)
  1189.  ONEWORDINLINE(0xA8FB);
  1190. extern pascal void MapPoly(PolyHandle poly, const Rect *srcRect, const Rect *dstRect)
  1191.  ONEWORDINLINE(0xA8FC);
  1192. extern pascal void SetStdProcs(QDProcs *procs)
  1193.  ONEWORDINLINE(0xA8EA);
  1194. extern pascal void StdRect(GrafVerb verb, const Rect *r)
  1195.  ONEWORDINLINE(0xA8A0);
  1196. extern pascal void StdRRect(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight)
  1197.  ONEWORDINLINE(0xA8AF);
  1198. extern pascal void StdOval(GrafVerb verb, const Rect *r)
  1199.  ONEWORDINLINE(0xA8B6);
  1200. extern pascal void StdArc(GrafVerb verb, const Rect *r, short startAngle, short arcAngle)
  1201.  ONEWORDINLINE(0xA8BD);
  1202. extern pascal void StdPoly(GrafVerb verb, PolyHandle poly)
  1203.  ONEWORDINLINE(0xA8C5);
  1204. extern pascal void StdRgn(GrafVerb verb, RgnHandle rgn)
  1205.  ONEWORDINLINE(0xA8D1);
  1206. extern pascal void StdBits(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1207.  ONEWORDINLINE(0xA8EB);
  1208. extern pascal void StdComment(short kind, short dataSize, Handle dataHandle)
  1209.  ONEWORDINLINE(0xA8F1);
  1210. extern pascal void StdGetPic(void *dataPtr, short byteCount)
  1211.  ONEWORDINLINE(0xA8EE);
  1212. extern pascal void StdPutPic(const void *dataPtr, short byteCount)
  1213.  ONEWORDINLINE(0xA8F0);
  1214. extern pascal void AddPt(Point src, Point *dst)
  1215.  ONEWORDINLINE(0xA87E);
  1216. extern pascal Boolean EqualPt(Point pt1, Point pt2)
  1217.  ONEWORDINLINE(0xA881);
  1218. extern pascal Boolean PtInRect(Point pt, const Rect *r)
  1219.  ONEWORDINLINE(0xA8AD);
  1220. extern pascal void Pt2Rect(Point pt1, Point pt2, Rect *dstRect)
  1221.  ONEWORDINLINE(0xA8AC);
  1222. extern pascal void PtToAngle(const Rect *r, Point pt, short *angle)
  1223.  ONEWORDINLINE(0xA8C3);
  1224. extern pascal void SubPt(Point src, Point *dst)
  1225.  ONEWORDINLINE(0xA87F);
  1226. extern pascal Boolean PtInRgn(Point pt, RgnHandle rgn)
  1227.  ONEWORDINLINE(0xA8E8);
  1228. extern pascal void StdLine(Point newPt)
  1229.  ONEWORDINLINE(0xA890);
  1230. extern pascal void OpenCPort(CGrafPtr port)
  1231.  ONEWORDINLINE(0xAA00);
  1232. extern pascal void InitCPort(CGrafPtr port)
  1233.  ONEWORDINLINE(0xAA01);
  1234. extern pascal void CloseCPort(CGrafPtr port)
  1235.  ONEWORDINLINE(0xA87D);
  1236. extern pascal PixMapHandle NewPixMap(void)
  1237.  ONEWORDINLINE(0xAA03);
  1238. extern pascal void DisposePixMap(PixMapHandle pm)
  1239.  ONEWORDINLINE(0xAA04);
  1240. extern pascal void CopyPixMap(PixMapHandle srcPM, PixMapHandle dstPM)
  1241.  ONEWORDINLINE(0xAA05);
  1242. extern pascal PixPatHandle NewPixPat(void)
  1243.  ONEWORDINLINE(0xAA07);
  1244. extern pascal void DisposePixPat(PixPatHandle pp)
  1245.  ONEWORDINLINE(0xAA08);
  1246. extern pascal void CopyPixPat(PixPatHandle srcPP, PixPatHandle dstPP)
  1247.  ONEWORDINLINE(0xAA09);
  1248. extern pascal void PenPixPat(PixPatHandle pp)
  1249.  ONEWORDINLINE(0xAA0A);
  1250. extern pascal void BackPixPat(PixPatHandle pp)
  1251.  ONEWORDINLINE(0xAA0B);
  1252. extern pascal PixPatHandle GetPixPat(short patID)
  1253.  ONEWORDINLINE(0xAA0C);
  1254. extern pascal void MakeRGBPat(PixPatHandle pp, const RGBColor *myColor)
  1255.  ONEWORDINLINE(0xAA0D);
  1256. extern pascal void FillCRect(const Rect *r, PixPatHandle pp)
  1257.  ONEWORDINLINE(0xAA0E);
  1258. extern pascal void FillCOval(const Rect *r, PixPatHandle pp)
  1259.  ONEWORDINLINE(0xAA0F);
  1260. extern pascal void FillCRoundRect(const Rect *r, short ovalWidth, short ovalHeight, PixPatHandle pp)
  1261.  ONEWORDINLINE(0xAA10);
  1262. extern pascal void FillCArc(const Rect *r, short startAngle, short arcAngle, PixPatHandle pp)
  1263.  ONEWORDINLINE(0xAA11);
  1264. extern pascal void FillCRgn(RgnHandle rgn, PixPatHandle pp)
  1265.  ONEWORDINLINE(0xAA12);
  1266. extern pascal void FillCPoly(PolyHandle poly, PixPatHandle pp)
  1267.  ONEWORDINLINE(0xAA13);
  1268. extern pascal void RGBForeColor(const RGBColor *color)
  1269.  ONEWORDINLINE(0xAA14);
  1270. extern pascal void RGBBackColor(const RGBColor *color)
  1271.  ONEWORDINLINE(0xAA15);
  1272. extern pascal void SetCPixel(short h, short v, const RGBColor *cPix)
  1273.  ONEWORDINLINE(0xAA16);
  1274. extern pascal void SetPortPix(PixMapHandle pm)
  1275.  ONEWORDINLINE(0xAA06);
  1276. extern pascal void GetCPixel(short h, short v, RGBColor *cPix)
  1277.  ONEWORDINLINE(0xAA17);
  1278. extern pascal void GetForeColor(RGBColor *color)
  1279.  ONEWORDINLINE(0xAA19);
  1280. extern pascal void GetBackColor(RGBColor *color)
  1281.  ONEWORDINLINE(0xAA1A);
  1282. extern pascal void SeedCFill(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short seedH, short seedV, ColorSearchUPP matchProc, long matchData)
  1283.  ONEWORDINLINE(0xAA50);
  1284. extern pascal void CalcCMask(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, const RGBColor *seedRGB, ColorSearchUPP matchProc, long matchData)
  1285.  ONEWORDINLINE(0xAA4F);
  1286. extern pascal PicHandle OpenCPicture(const OpenCPicParams *newHeader)
  1287.  ONEWORDINLINE(0xAA20);
  1288. extern pascal void OpColor(const RGBColor *color)
  1289.  ONEWORDINLINE(0xAA21);
  1290. extern pascal void HiliteColor(const RGBColor *color)
  1291.  ONEWORDINLINE(0xAA22);
  1292. extern pascal void DisposeCTable(CTabHandle cTable)
  1293.  ONEWORDINLINE(0xAA24);
  1294. extern pascal CTabHandle GetCTable(short ctID)
  1295.  ONEWORDINLINE(0xAA18);
  1296. extern pascal CCrsrHandle GetCCursor(short crsrID)
  1297.  ONEWORDINLINE(0xAA1B);
  1298. extern pascal void SetCCursor(CCrsrHandle cCrsr)
  1299.  ONEWORDINLINE(0xAA1C);
  1300. extern pascal void AllocCursor(void)
  1301.  ONEWORDINLINE(0xAA1D);
  1302. extern pascal void DisposeCCursor(CCrsrHandle cCrsr)
  1303.  ONEWORDINLINE(0xAA26);
  1304. #if OLDROUTINELOCATIONS
  1305. extern pascal CIconHandle GetCIcon(short iconID)
  1306.  ONEWORDINLINE(0xAA1E);
  1307. extern pascal void PlotCIcon(const Rect *theRect, CIconHandle theIcon)
  1308.  ONEWORDINLINE(0xAA1F);
  1309. extern pascal void DisposeCIcon(CIconHandle theIcon)
  1310.  ONEWORDINLINE(0xAA25);
  1311. #endif
  1312. extern pascal void SetStdCProcs(CQDProcs *procs)
  1313.  ONEWORDINLINE(0xAA4E);
  1314. extern pascal GDHandle GetMaxDevice(const Rect *globalRect)
  1315.  ONEWORDINLINE(0xAA27);
  1316. extern pascal long GetCTSeed(void)
  1317.  ONEWORDINLINE(0xAA28);
  1318. extern pascal GDHandle GetDeviceList(void)
  1319.  ONEWORDINLINE(0xAA29);
  1320. extern pascal GDHandle GetMainDevice(void)
  1321.  ONEWORDINLINE(0xAA2A);
  1322. extern pascal GDHandle GetNextDevice(GDHandle curDevice)
  1323.  ONEWORDINLINE(0xAA2B);
  1324. extern pascal Boolean TestDeviceAttribute(GDHandle gdh, short attribute)
  1325.  ONEWORDINLINE(0xAA2C);
  1326. extern pascal void SetDeviceAttribute(GDHandle gdh, short attribute, Boolean value)
  1327.  ONEWORDINLINE(0xAA2D);
  1328. extern pascal void InitGDevice(short qdRefNum, long mode, GDHandle gdh)
  1329.  ONEWORDINLINE(0xAA2E);
  1330. extern pascal GDHandle NewGDevice(short refNum, long mode)
  1331.  ONEWORDINLINE(0xAA2F);
  1332. extern pascal void DisposeGDevice(GDHandle gdh)
  1333.  ONEWORDINLINE(0xAA30);
  1334. extern pascal void SetGDevice(GDHandle gd)
  1335.  ONEWORDINLINE(0xAA31);
  1336. extern pascal GDHandle GetGDevice(void)
  1337.  ONEWORDINLINE(0xAA32);
  1338. extern pascal long Color2Index(const RGBColor *myColor)
  1339.  ONEWORDINLINE(0xAA33);
  1340. extern pascal void Index2Color(long index, RGBColor *aColor)
  1341.  ONEWORDINLINE(0xAA34);
  1342. extern pascal void InvertColor(RGBColor *myColor)
  1343.  ONEWORDINLINE(0xAA35);
  1344. extern pascal Boolean RealColor(const RGBColor *color)
  1345.  ONEWORDINLINE(0xAA36);
  1346. extern pascal void GetSubTable(CTabHandle myColors, short iTabRes, CTabHandle targetTbl)
  1347.  ONEWORDINLINE(0xAA37);
  1348. extern pascal void MakeITable(CTabHandle cTabH, ITabHandle iTabH, short res)
  1349.  ONEWORDINLINE(0xAA39);
  1350. extern pascal void AddSearch(ColorSearchUPP searchProc)
  1351.  ONEWORDINLINE(0xAA3A);
  1352. extern pascal void AddComp(ColorComplementUPP compProc)
  1353.  ONEWORDINLINE(0xAA3B);
  1354. extern pascal void DelSearch(ColorSearchUPP searchProc)
  1355.  ONEWORDINLINE(0xAA4C);
  1356. extern pascal void DelComp(ColorComplementUPP compProc)
  1357.  ONEWORDINLINE(0xAA4D);
  1358. extern pascal void SetClientID(short id)
  1359.  ONEWORDINLINE(0xAA3C);
  1360. extern pascal void ProtectEntry(short index, Boolean protect)
  1361.  ONEWORDINLINE(0xAA3D);
  1362. extern pascal void ReserveEntry(short index, Boolean reserve)
  1363.  ONEWORDINLINE(0xAA3E);
  1364. extern pascal void SetEntries(short start, short count, CSpecArray aTable)
  1365.  ONEWORDINLINE(0xAA3F);
  1366. extern pascal void SaveEntries(CTabHandle srcTable, CTabHandle resultTable, ReqListRec *selection)
  1367.  ONEWORDINLINE(0xAA49);
  1368. extern pascal void RestoreEntries(CTabHandle srcTable, CTabHandle dstTable, ReqListRec *selection)
  1369.  ONEWORDINLINE(0xAA4A);
  1370. extern pascal short QDError(void)
  1371.  ONEWORDINLINE(0xAA40);
  1372. extern pascal void CopyDeepMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1373.  ONEWORDINLINE(0xAA51);
  1374. extern pascal void DeviceLoop(RgnHandle drawingRgn, DeviceLoopDrawingUPP drawingProc, long userData, DeviceLoopFlags flags)
  1375.  ONEWORDINLINE(0xABCA);
  1376.  
  1377. #if !GENERATINGCFM
  1378. #pragma parameter __A0 GetMaskTable
  1379. #endif
  1380. extern pascal Ptr GetMaskTable(void)
  1381.  ONEWORDINLINE(0xA836);
  1382. extern pascal PatHandle GetPattern(short patternID)
  1383.  ONEWORDINLINE(0xA9B8);
  1384. extern pascal CursHandle GetCursor(short cursorID)
  1385.  ONEWORDINLINE(0xA9B9);
  1386. extern pascal PicHandle GetPicture(short pictureID)
  1387.  ONEWORDINLINE(0xA9BC);
  1388. extern pascal long DeltaPoint(Point ptA, Point ptB)
  1389.  ONEWORDINLINE(0xA94F);
  1390. extern pascal void ShieldCursor(const Rect *shieldRect, Point offsetPt)
  1391.  ONEWORDINLINE(0xA855);
  1392. extern pascal void ScreenRes(short *scrnHRes, short *scrnVRes)
  1393.  SIXWORDINLINE(0x225F, 0x32B8, 0x0102, 0x225F, 0x32B8, 0x0104);
  1394. extern pascal void GetIndPattern(Pattern *thePat, short patternListID, short index);
  1395. #if CGLUESUPPORTED
  1396. extern Boolean ptinrect(const Point *pt, const Rect *r);
  1397. extern void pt2rect(const Point *pt1, const Point *pt2, Rect *destRect);
  1398. extern void pttoangle(const Rect *r, const Point *pt, short *angle);
  1399. extern Boolean ptinrgn(const Point *pt, RgnHandle rgn);
  1400. extern void addpt(const Point *src, Point *dst);
  1401. extern void subpt(const Point *src, Point *dst);
  1402. extern Boolean equalpt(const Point *pt1, const Point *pt2);
  1403. extern void stuffhex(void *thingPtr, const char *s);
  1404. extern void stdline(const Point *newPt);
  1405. extern void shieldcursor(const Rect *shieldRect, Point *offsetPt);
  1406. extern long deltapoint(Point *ptA, Point *ptB);
  1407. #endif
  1408. #if OLDROUTINENAMES
  1409. #define DisposPixMap(pm) DisposePixMap(pm)
  1410. #define DisposPixPat(pp) DisposePixPat(pp)
  1411. #define DisposCTable(cTable) DisposeCTable(cTable)
  1412. #define DisposCCursor(cCrsr) DisposeCCursor(cCrsr)
  1413. #if OLDROUTINELOCATIONS
  1414. #define DisposCIcon(theIcon) DisposeCIcon(theIcon)
  1415. #endif
  1416. #define DisposGDevice(gdh) DisposeGDevice(gdh)
  1417. #endif
  1418.  
  1419. #if PRAGMA_IMPORT_SUPPORTED
  1420. #pragma import off
  1421. #endif
  1422.  
  1423. #if PRAGMA_ALIGN_SUPPORTED
  1424. #pragma options align=reset
  1425. #endif
  1426.  
  1427. #ifdef __cplusplus
  1428. }
  1429. #endif
  1430.  
  1431. #endif /* __QUICKDRAW__ */
  1432.